import _ from 'lodash';
import ComponentDefinition from '../ComponentTemplate/componentDefinition';
import { ComponentLibraryHelper } from '../ComponentTemplate/componentLibrary';

/**
 * 从组件包解析出组件的定义， 并冻结对象禁止修改
 *
 * @param {String} id 组件定义id
 * @param {Object} target script.onload 后 callback 的对象
 * @returns
 */
export const interpretComponentDefinitionFromPackage = (id, target) => {
	let cpntDefObj = { id: id };
	cpntDefObj = Object.assign(cpntDefObj, target._cifcfg.config);
	cpntDefObj = Object.assign(cpntDefObj, target._cifcfg.data);
	cpntDefObj = Object.assign(cpntDefObj, cpntDefObj.base);
	if (target.__isLocalDev === true) {
		cpntDefObj.name = _.get(
			target,
			'_cifcfg.config.base.name',
			_.get(target, 'name', '本地开发组件')
		);
	} else {
		const pkg = ComponentLibraryHelper.getCpntLibEntryFromCache(id);
		cpntDefObj.name =
			_.get(pkg, 'name') ||
			_.get(target, '_cifcfg.config.base.name') ||
			_.get(target, 'name') ||
			'未命名组件';
		cpntDefObj.icon = _.get(pkg, 'icon', '');
	}
	const cpntDef = new ComponentDefinition(cpntDefObj);
	if (_.get(window, 'cif.config.logger.enable', false) === true) {
		console.log('CIF.CL.componentInterpreter:interpretComponentDefinitionFromPackage', cpntDef);
	}
	Object.freeze(cpntDef);
	return cpntDef;
};

// const componentStructure = {
//   name: 0, // 组件Vue注册名
//   label: "", // 组件显示的名称

//   top: 0, // 组件定位
//   left: 0, // 组件定位
//   icon: "icon-table", // 组件图标
//   img: require("@/assets/table.png"), // 组件背景

//   width: 0,
//   height: 0,
//   styleOption: [],
//   staticData: [], //
//   apiData: [],
//   serviceListData: [],
//   dataSourceType: 0, // 枚举：staticData = 0、apiData = 1, serviceListData = 2
//   eventOption: [],

//   option: {
//     title: "表格",
//     name: "表格",
//     icon: "icon-table",
//     img: require("@/assets/table.png"),
//     top: 0,
//     left: 0,
//     dataSourceType: 0,
//     data: [
//       {
//         type1: "数据1",
//         type2: "数据1",
//       },
//       {
//         type1: "数据2",
//         type2: "数据2",
//       },
//       {
//         type1: "数据3",
//         type2: "数据3",
//       },
//       {
//         type1: "数据4",
//         type2: "数据4",
//       },
//     ],
//     dataFormatter: "",
//     stylesFormatter: "",
//     component: {
//       width: 500,
//       height: 200,
//       name: "table",
//       prop: "table",
//     },
//     option: {
//       columnShow: true,
//       columnViews: true,
//       headerBackground: "rgba(30, 144, 255, 1)",
//       headerColor: "rgba(241, 242, 245, 1)",
//       headerTextAlign: "center",
//       bodyBackground: "rgba(0, 0, 0, 0.01)",
//       bodyColor: "rgba(0, 0, 0, 1)",
//       borderColor: "rgba(51, 65, 107, 1)",
//       bodyTextAlign: "center",
//       column: [
//         {
//           label: "车牌号",
//           prop: "type1",
//         },
//         {
//           label: "驾驶员",
//           prop: "type2",
//         },
//         {
//           label: "里程",
//           prop: "type3",
//         },
//         {
//           label: "油耗",
//           prop: "type4",
//         },
//       ],
//       align: "center",
//       headerAlign: "center",
//       header: false,
//       scroll: true,
//       scrollTime: 10000,
//       fontSize: 15,
//       count: 4,
//       nthColor: "rgba(127, 185, 242, 1)",
//       othColor: "rgba(164, 205, 244, 1)",
//       index: true,
//       scrollCount: 1,
//     },
//   },
// }
